SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

CREATE SCHEMA IF NOT EXISTS `tvcable` DEFAULT CHARACTER SET ascii COLLATE ascii_general_ci ;
USE `tvcable`;

-- -----------------------------------------------------
-- Table `tvcable`.`mg_tipo_clientes`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `tvcable`.`mg_tipo_clientes` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `descripcion` VARCHAR(45) NULL ,
  `created` DATE NULL ,
  `modified` DATE NULL ,
  `adicionado_por` VARCHAR(20) NULL ,
  `modificado_por` VARCHAR(20) NULL ,
  PRIMARY KEY (`id`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `tvcable`.`mg_clientes`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `tvcable`.`mg_clientes` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `primer_nombre` VARCHAR(15) NOT NULL ,
  `segundo_nombre` VARCHAR(15) NULL ,
  `primer_apellido` VARCHAR(15) NOT NULL ,
  `segundo_apellido` VARCHAR(15) NULL ,
  `telefono_residencia` VARCHAR(8) NULL ,
  `telefono_celular` VARCHAR(9) NULL ,
  `mg_tipo_cliente_id` INT NOT NULL ,
  `nombre_comercial` VARCHAR(45) NULL ,
  `referencias` TEXT NULL ,
  `telefono_oficina` VARCHAR(8) NULL ,
  `telefono_otro` VARCHAR(9) NULL ,
  `created` DATE NULL ,
  `modified` DATE NULL ,
  `adicionado_por` VARCHAR(20) NULL ,
  `modificado_por` VARCHAR(20) NULL ,
  `identidad` VARCHAR(20) NULL ,
  `fecha_nacimiento` DATE NULL ,
  `primer_nombre_representante_legal` VARCHAR(20) NULL ,
  `segundo_nombre_representante_legal` VARCHAR(20) NULL ,
  `primer_apellido_representante_legal` VARCHAR(20) NULL ,
  `segundo_apellido_representante_legal` VARCHAR(20) NULL ,
  `identidad_representante_legal` VARCHAR(20) NULL ,
  `correo_electronico` VARCHAR(30) NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `mg_cliente_tipo` (`mg_tipo_cliente_id` ASC) ,
  CONSTRAINT `mg_cliente_tipo`
    FOREIGN KEY (`mg_tipo_cliente_id` )
    REFERENCES `tvcable`.`mg_tipo_clientes` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `tvcable`.`mg_tipo_descuentos`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `tvcable`.`mg_tipo_descuentos` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `descripcion` VARCHAR(45) NULL ,
  `valor_descuento` INT NULL ,
  `created` DATE NULL ,
  `modified` DATE NULL ,
  `adicionado_por` VARCHAR(20) NULL ,
  `modificado_por` VARCHAR(20) NULL ,
  PRIMARY KEY (`id`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `tvcable`.`mg_paises`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `tvcable`.`mg_paises` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `descripcion` VARCHAR(25) NOT NULL ,
  `created` DATE NULL ,
  `modified` DATE NULL ,
  `adicionado_por` VARCHAR(20) NULL ,
  `modificado_por` VARCHAR(20) NULL ,
  PRIMARY KEY (`id`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `tvcable`.`mg_departamentos`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `tvcable`.`mg_departamentos` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `descripcion` VARCHAR(25) NOT NULL ,
  `mg_pais_id` INT NOT NULL ,
  `created` DATE NULL ,
  `modified` DATE NULL ,
  `adicionado_por` VARCHAR(20) NULL ,
  `modificado_por` VARCHAR(20) NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `mg_departamento_pais` (`mg_pais_id` ASC) ,
  CONSTRAINT `mg_departamento_pais`
    FOREIGN KEY (`mg_pais_id` )
    REFERENCES `tvcable`.`mg_paises` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `tvcable`.`mg_municipios`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `tvcable`.`mg_municipios` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `mg_pais_id` INT NULL ,
  `mg_departamento_id` INT NULL ,
  `descripcion` VARCHAR(45) NULL ,
  `created` DATE NULL ,
  `modified` DATE NULL ,
  `adicionado_por` VARCHAR(20) NULL ,
  `modificado_por` VARCHAR(20) NULL ,
  `codigo_municipio` INT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `mg_municipio_departamento` (`mg_departamento_id` ASC) ,
  INDEX `mg_municipio_pais` (`mg_pais_id` ASC) ,
  CONSTRAINT `mg_municipio_departamento`
    FOREIGN KEY (`mg_departamento_id` )
    REFERENCES `tvcable`.`mg_departamentos` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `mg_municipio_pais`
    FOREIGN KEY (`mg_pais_id` )
    REFERENCES `tvcable`.`mg_paises` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `tvcable`.`mg_zonas`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `tvcable`.`mg_zonas` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `created` DATE NULL ,
  `modified` DATE NULL ,
  `adicionado_por` VARCHAR(20) NULL ,
  `modificado_por` VARCHAR(20) NULL ,
  `id_municipio` INT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `mg_zona_municpio` (`id_municipio` ASC) ,
  CONSTRAINT `mg_zona_municpio`
    FOREIGN KEY (`id_municipio` )
    REFERENCES `tvcable`.`mg_municipios` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `tvcable`.`mg_descuentos_por_clientes`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `tvcable`.`mg_descuentos_por_clientes` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `mg_cliente_id` INT NOT NULL ,
  `mg_tipo_descuento_id` INT NOT NULL ,
  `created` DATE NULL ,
  `modified` DATE NULL ,
  `adicionado_por` VARCHAR(20) NULL ,
  `modificado_por` VARCHAR(20) NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `mg_descuento_cliente` (`mg_cliente_id` ASC) ,
  INDEX `mg_descuento_tipo` (`mg_tipo_descuento_id` ASC) ,
  CONSTRAINT `mg_descuento_cliente`
    FOREIGN KEY (`mg_cliente_id` )
    REFERENCES `tvcable`.`mg_clientes` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `mg_descuento_tipo`
    FOREIGN KEY (`mg_tipo_descuento_id` )
    REFERENCES `tvcable`.`mg_tipo_descuentos` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `tvcable`.`tc_contratos`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `tvcable`.`tc_contratos` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `mg_cliente_id` INT NOT NULL ,
  `created` DATE NULL ,
  `modified` DATE NULL ,
  `adicionado_por` VARCHAR(45) NULL ,
  `modificado_por` VARCHAR(45) NULL ,
  `numero_contrato` VARCHAR(20) NULL ,
  `fecha_ultimo_pago` DATE NULL ,
  `situacion` INT NULL ,
  `fecha_instalacion` DATE NULL ,
  `descripcion` TEXT NULL ,
  `cantidad_televisores` INT NULL ,
  `fecha_proximo_pago` DATE NULL ,
  `meses_en_mora` INT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `mg_clientes_id` (`mg_cliente_id` ASC) ,
  INDEX `id_numero_contrato` (`numero_contrato` ASC) ,
  CONSTRAINT `mg_clientes_id`
    FOREIGN KEY (`mg_cliente_id` )
    REFERENCES `tvcable`.`mg_clientes` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `tvcable`.`in_movimientos_diarios`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `tvcable`.`in_movimientos_diarios` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `in_contrato_id` DATE NOT NULL ,
  `fecha_adicion` DATE NOT NULL ,
  `valor` FLOAT NOT NULL ,
  PRIMARY KEY (`id`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `tvcable`.`mg_tipo_transacciones`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `tvcable`.`mg_tipo_transacciones` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `descripcion` VARCHAR(60) NULL ,
  `tipo_operacion` VARCHAR(3) NULL ,
  `created` DATE NULL ,
  `modified` DATE NULL ,
  `adicionado_por` VARCHAR(45) NULL ,
  PRIMARY KEY (`id`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `tvcable`.`mg_vendedores`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `tvcable`.`mg_vendedores` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `primer_nombre` VARCHAR(20) NULL ,
  `segundo_nombre` VARCHAR(20) NULL ,
  `primero_apellido` VARCHAR(20) NULL ,
  `segundo_apellido` VARCHAR(20) NULL ,
  `telefono_casa` VARCHAR(12) NULL ,
  `telefono_celular` VARCHAR(12) NULL ,
  `telefono_otro` VARCHAR(12) NULL ,
  `estado` VARCHAR(3) NULL ,
  `correo_electronico` VARCHAR(30) NULL ,
  `codigo_vendedor` VARCHAR(20) NULL ,
  PRIMARY KEY (`id`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `tvcable`.`tc_movimientos_diarios`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `tvcable`.`tc_movimientos_diarios` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `tc_contrato_id` INT NULL ,
  `mg_tipo_transaccion_id` INT NULL ,
  `valor_transaccion` INT NULL ,
  `pago_mes_inicial` DATE NULL ,
  `pago_mes_final` DATE NULL ,
  `created` DATE NULL ,
  `modified` DATE NULL ,
  `adicionado_por` VARCHAR(20) NULL ,
  `situacion` INT NULL ,
  `modificado_por` VARCHAR(20) NULL ,
  `mg_documento_banco_id` VARCHAR(45) NULL ,
  `total_descuento` INT NULL ,
  `descripcion` TEXT NULL ,
  `mg_vendedor_id` INT NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `tc_contrato_id` (`tc_contrato_id` ASC, `id` ASC) ,
  INDEX `mg_movimientos_tipo_transaccion` (`mg_tipo_transaccion_id` ASC) ,
  INDEX `mg_movimiento_vendedor` (`mg_vendedor_id` ASC) ,
  CONSTRAINT `tc_contrato_id`
    FOREIGN KEY (`tc_contrato_id` , `id` )
    REFERENCES `tvcable`.`tc_contratos` (`id` , `id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `mg_movimientos_tipo_transaccion`
    FOREIGN KEY (`mg_tipo_transaccion_id` )
    REFERENCES `tvcable`.`mg_tipo_transacciones` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `mg_movimiento_vendedor`
    FOREIGN KEY (`mg_vendedor_id` )
    REFERENCES `tvcable`.`mg_vendedores` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `tvcable`.`tc_moras`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `tvcable`.`tc_moras` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `tc_contrato_id` INT NULL ,
  `mes` INT NULL ,
  `año` INT NULL ,
  `estado` VARCHAR(2) NULL ,
  `modificado_por` VARCHAR(45) NULL ,
  `created` DATE NULL ,
  `modified` DATE NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `tc_moras_contrato` (`tc_contrato_id` ASC) ,
  CONSTRAINT `tc_moras_contrato`
    FOREIGN KEY (`tc_contrato_id` )
    REFERENCES `tvcable`.`tc_contratos` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `tvcable`.`mg_tipo_usuarios`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `tvcable`.`mg_tipo_usuarios` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `descripcion` VARCHAR(60) NULL ,
  `created` DATE NULL ,
  `modified` DATE NULL ,
  `adicionado_por` VARCHAR(20) NULL ,
  `modificado_por` VARCHAR(20) NULL ,
  PRIMARY KEY (`id`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `tvcable`.`mg_usuarios`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `tvcable`.`mg_usuarios` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `primer_nombre` VARCHAR(20) NULL ,
  `segundo_nombre` VARCHAR(20) NULL ,
  `primero_apellido` VARCHAR(20) NULL ,
  `segundo_apellido` VARCHAR(20) NULL ,
  `mg_tipo_usuario_id` INT NULL ,
  `telefono_casa` VARCHAR(12) NULL ,
  `telefono_celular` VARCHAR(12) NULL ,
  `telefono_otro` VARCHAR(12) NULL ,
  `clave` VARCHAR(20) NULL ,
  `estado` VARCHAR(3) NULL ,
  `correo_electronico` VARCHAR(30) NULL ,
  `codigo_usuario` VARCHAR(20) NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `mg_usuarios_tipo` (`mg_tipo_usuario_id` ASC) ,
  INDEX `id_codigo_usuario` (`codigo_usuario` ASC) ,
  CONSTRAINT `mg_usuarios_tipo`
    FOREIGN KEY (`mg_tipo_usuario_id` )
    REFERENCES `tvcable`.`mg_tipo_usuarios` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `tvcable`.`mg_colonia`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `tvcable`.`mg_colonia` (
  `id` INT NOT NULL ,
  `zona_id` INT NOT NULL ,
  `descripcion` TEXT NULL ,
  `precio` INT NULL ,
  `created` DATE NULL ,
  `modified` DATE NULL ,
  `adicionado_por` VARCHAR(20) NULL ,
  `modificado_por` VARCHAR(20) NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `colonia_zona` (`zona_id` ASC) ,
  CONSTRAINT `colonia_zona`
    FOREIGN KEY (`zona_id` )
    REFERENCES `tvcable`.`mg_zonas` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `tvcable`.`mg_direcciones`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `tvcable`.`mg_direcciones` (
  `mg_cliente_id` INT NULL ,
  `casa` INT NULL ,
  `bloque` VARCHAR(5) NULL ,
  `calle` VARCHAR(20) NULL ,
  `mg_colonia_id` VARCHAR(45) NULL ,
  `descripcion` VARCHAR(80) NULL ,
  `id` INT NOT NULL ,
  `created` DATE NULL ,
  `modified` DATE NULL ,
  `adicionado_por` VARCHAR(20) NULL ,
  `modificado_por` VARCHAR(20) NULL ,
  `avenida` VARCHAR(20) NULL ,
  PRIMARY KEY (`id`) ,
  INDEX `mg_direccion_cliente` (`mg_cliente_id` ASC) ,
  INDEX `mg_direccion_colonia` (`mg_colonia_id` ASC) ,
  CONSTRAINT `mg_direccion_cliente`
    FOREIGN KEY (`mg_cliente_id` )
    REFERENCES `tvcable`.`mg_clientes` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `mg_direccion_colonia`
    FOREIGN KEY (`mg_colonia_id` )
    REFERENCES `tvcable`.`mg_colonia` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Placeholder table for view `tvcable`.`tc_mora`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `tvcable`.`tc_mora` (`id` INT);

-- -----------------------------------------------------
-- View `tvcable`.`tc_mora`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `tvcable`.`tc_mora`;
CREATE  OR REPLACE VIEW `tvcable`.`tc_mora` AS 
    SELECT * FROM tc_contrato 
    WHERE YEAR(fecha_ultimo_pago) = YEAR(NOW())
    AND MONTH(fecha_ultimo_pago) < MONTO(NOW());


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
